A virtualized storage system is operable to handle a virtual representation of a physical storage space and to facilitate necessary mapping between the physical storage space and its virtual representation. The virtual representation consists of at least one virtual layer, operative to represent logical units, e.g. logical volumes, available to clients.
Implementing virtualization layers involves employing data structures for mapping virtual address ranges, within the virtual address space of logical volumes, into the physical storage space. The virtual address space of the storage system can be substantially larger than the physical storage space.
A virtual storage space is allocated for a logical volume upon volume creation. However, physical storage allocation is not necessarily required at the time of the volume creation. Physical address blocks can be allocated for a logical volume, in the physical storage space, only upon actual writing to the volume and only then the allocated physical address blocks are mapped to virtual address blocks within the virtual storage space of the volume. Since the storage resources are not necessarily allocated for the logical volume upfront, a storage system is required to monitor and possibly restrict the storage resources consumed by the logical volumes, so as to avoid situations of resource starvation caused due to unreasonably usage by a minority of volumes.
A mass storage system may be used as a data hosting service for multiple customers, all sharing the same storage resources. One of the central challenges in a shared environment is to manage resources such that applications and customers are isolated from each other and their performance can be guaranteed as in a dedicated environment. To avoid unjust resource allocation in the shared environment of a mass storage system, resources such as cache and storage space have to be managed. Especially, techniques for monitoring storage capacity consumed by thin provisioning volumes have been implemented by storage systems to avoid over allocation of the shared storage area.